var fs=require("fs")

var formidable=require("formidable")

var gm=require("gm").subClass({ imageMagick: true })



var db=require("./db.js")

var db1=require("./db1.js")

var md5=require("./md5.js")

var otherRouter="打发"


			/*页面路由区*/
//主页路由页面
exports.index=function(req,res,next){
	fs.readFile("./views/index.html",function(err,data){
		if(err){
			next()
			return ;
		}
		res.send(data.toString())
	})
}

//我的说说页面
exports.myshuoshuo=function(req,res,next){
	otherRouter="你好"
	if(req.session&&req.session.control){
		fs.readFile("./views/myshuoshuo.html",function(err,data){
			if(err){
				next()
				return ;
			}
			res.send(data.toString())
		})
	}else{
		fs.readFile("./views/index.html",function(err,data){
			if(err){
				next()
				return ;
			}
			res.send(data.toString())
		})
	}
	
		
}

//成员列表
exports.memberslist=function(req,res,next){
	if(req.session&&req.session.control){
		fs.readFile("./views/memberslist.html",function(err,data){
			if(err){
				next()
				return ;
			}
			res.send(data.toString())
		})
	}else{
		fs.readFile("./views/index.html",function(err,data){
			if(err){
				next()
				return ;
			}
			res.send(data.toString())
		})
	}
}

//注册路由页面
exports.enroll=function(req,res,next){
	fs.readFile("./views/enroll.html",function(err,data){
		if(err){
			next()
			return ;
		}
		res.send(data.toString())
	})
}

//登录路由页面
exports.login=function(req,res,next){
	fs.readFile("./views/login.html",function(err,data){
		if(err){
			next()
			return ;
		}
		res.send(data.toString())
	})
}

//点击头像跳转页面，用于修改头像
exports.myhourse=function(req,res,next){
	if(req.session&&req.session.control){
		fs.readFile("./views/myhourse.html",function(err,data){
			if(err){
				next()
				return ;
			}
			res.send(data.toString())
		})
	}
	else
		next()
	
}

//点击头像或者人名来转的路由
exports.user=function(req,res){
	if(!(req.session&&req.session.control)){
		res.redirect("/login")
		return ;
	}
	var otherName=req.params.name
	otherRouter=otherName
	fs.readFile("./views/otheruser.html",function(err,data){
		if(err){
			next()
			return ;
		}
		res.send(data.toString())
	})
}



				/*表单提交区*/
//注册，向数据库里面写用户
exports.enrollsubmit=function(req,res){
	var form = new formidable.IncomingForm()
	form.parse(req, function(err, fields, files) {  
      var userName=fields.username
      var passWord=fields.password
      var passWordMd5=md5(md5(passWord)+"密码加密")
      db.insertOne({"username":userName,"password":passWordMd5,"avatar":"default.jpg","sign":"懒得很，没写"},function(err,data){
      	if(err)
      		console.log(err)
      	else{
      		res.redirect("/")
      	}
      })
    })
}

//登录的表单提交
exports.loginsubmit=function(req,res){
	var form = new formidable.IncomingForm()
	form.parse(req, function(err, fields, files) {
		var username=fields.username
		var password=fields.password
		var passWordMd5=md5(md5(password)+"密码加密")
		db.findOne({"username":username},function(err,data){
			if(err)
				res.send("服务器错误")
			else if(data){
				if(data.password!==passWordMd5){
					res.send("密码错误")
				}else{
					req.session.control=true
					req.session.username=username
					req.session.avatar=data.avatar
					req.session.sign=data.sign
					res.send("登录成功")
				}
			}else{
				res.send("用户名错误")
			}
		})
	})
}

//头像提交，同时修改数据库中的 avatar:default.jpg 键值对
//和修改session中的avatar项
exports.avatar=function(req,res,next){
	var form = new formidable.IncomingForm()
	form.uploadDir = "./public/img"
	form.parse(req, function(err, fields, files) {
	  var folder=fields.folder
      fs.rename("./"+files.avatar.path,"./public/img/"+req.session.username+".jpg",function(err){
      	if(err){
      		next()
      		return ;
      	}
      	else{
      		req.session.avatar=req.session.username+".jpg"
      		db.upDateOne({"username":req.session.username},{"avatar":req.session.avatar},function(err,data){
      			if(err)
      				console.log("更新头像数据库失败")
      		})
      		gm("./public/img/"+req.session.avatar).resize(150,150, '!').write("./public/img/"+req.session.avatar,function(err){
				if(err)
					console.log(err)
				else{
					fs.readFile("./views/index.html",function(err,data){
						if(err){
							next()
							return ;
						}
						res.send(data.toString())
					})
				}
			})	
      	}
      })
	})
}

//头像修改
exports.setavatar=function(req,res){
	
}
//404路由页面
exports.err=function(req,res){
	fs.readFile("./views/err.html",function(err,data){
		if(err){
			console.log(err)
			return ;
		}
		res.send(data.toString())
	})
}



				/*Ajax区*/

//注册页面判断用户名是否冲突所请求的数据库信息
exports.enrollsubmitajax=function(req,res){
	var form = new formidable.IncomingForm()
	form.parse(req, function(err, fields, files) {
		var username=fields.username
		db.findAll({"username":username},function(err,data){
			if(err){
				res.send("服务器错误")
				return ;
			}
			if(!data.length){
				res.send("1")
				return ;
			}
			res.send("-1")
		})
	})
}

//主页面所要的数据：头像，用户名等等
exports.indexajax=function(req,res){
	if(req.session&&req.session.control){
		var data={
			"username":req.session.username,
			"avatar":req.session.avatar,
			"sign":req.session.sign
		}
		var form = new formidable.IncomingForm()
		form.parse(req, function(err, fields, files) {
			var skip=parseInt(fields.skip)
			db1.pageData({},{"shijian":-1},7,skip,function(err,result){
				if(err){
					res.send(JSON.stringify(data))
					return ;
				}else{
					data.jour=result
					res.send(JSON.stringify(data))
					return ;
				}
			})
		})
	}
	else{
		res.send("-1")
		return ;
	}



	//模仿添加一条说说
	// db1.insertOne({
	//   "jourUserName" : "代斌",
	//   "jourAvatar" : "代斌.jpg",
	//   "date" : "2018-1-1",
	//   "content" : "世界真的好漂亮啊！",
	//   "laud" : ["冷轩楼阁、", "刷刷、", "李江、", "3"],
	//   "comment" : [{
	//       "commentUserName" : "李江",
	//       "commentContent" : "确实是这样，世界真的很美好！",
	//       "answer" : [{
	//           "anserUserName" : "代斌",
	//           "anserContent" : "嗯嗯，我也觉得"
	//         }]
	//     }, {
	//       "commentUserName" : "李江",
	//       "commentContent" : "确家好水电费快捷键！",
	//       "answer" : [{
	//           "anserUserName" : "小伙子",
	//           "anserContent" : "嗯解决"
	//         }]
	//     }, {
	//       "commentUserName" : "dai",
	//       "commentContent" : "aaaaaaaAA啊啊啊啊啊"
	//     }]
	// },function(err,result){
	// 	if(err)
	// 		console.log(err)
	// 	console.log(result)
	// })

}

//我的说说页面要的数据
exports.getMyShuoshuo=function(req,res){
	if(!(req.session&&req.session.control)){
		res.send("-1")
	}
	var data={
		"username":req.session.username,
		"avatar":req.session.avatar,
		"sign":req.session.sign
	}
	db1.findAll({"jourUserName":req.session.username},function(err,result){
		if(err){
			res.send(data)
		}else{
			data.jour=result
			res.send(data)
		}
	})
}

//成员列表要的数据
exports.memberAjax=function(req,res){
	if(!(req.session&&req.session.control)){
		res.send("-1")
	}
	else{
		var form = new formidable.IncomingForm()
		form.parse(req, function(err, fields, files) {
			if(err)
				res.send("-1")
			var data={
				"username":req.session.username,
				"sign":req.session.sign,
				"avatar":req.session.avatar
			}
			var skip=fields.skip
			db.findFilter({},7,skip,function(err,result){
				if(err)
					res.send("-1")
				else{
					//memberData是一个数组
					var copyResult=result.concat()
					//把用户密码改了再给前端
					for(var i=0;i<copyResult.length;i++){
						copyResult[i].password="kk"
					}
					data.memberData=copyResult
					res.send(data)
				}
			})
		})
	}
}

//搜索成员要的数据
exports.memberSeachAjax=function(req,res){
	var form = new formidable.IncomingForm()
	form.parse(req, function(err, fields, files) {
		if(err)
			res.send("-1")
		else{
			let username=fields.username
			db.findOne({"username":username},function(err,result){
				if(err)
					res.send("-1")
				else
					res.send(result)
			})
		}
	})
}

//其他用户要的数据
exports.otheruser=function(req,res){
	db.findOne({"username":otherRouter},function(err,result){
		if(err){
			res.send("-1")
			return ;
		}else{
			var result2=JSON.stringify(result)
			var data=JSON.parse(result2)
			data.password="dd"
			db1.findAll({"jourUserName":otherRouter},function(err,resultall){
				if(err){
					res.send("-1")
					return ;
				}else{
					var jourdata=resultall.concat()
					data.jour=jourdata
					res.send(data)
				}
			})
		}

	})
}

		  /*更新数据库数据的Ajax*/
//更新赞数据
exports.updateLaud=function(req,res){
	if(req.session&&req.session.control){
		var form = new formidable.IncomingForm()
		form.parse(req, function(err, fields, files) {
			//console.log(fields.jourUserName)    //代斌
			// console.log(fields.date)           //2018-1-1
			// console.log(fields['laud[]'])      //[ '冷轩楼阁、', '李江、', '帅帅、', '3' ]
			if(err){
				res.send("-1")
				return ;
			}
			//更新数据库
			db1.upDateOne({
				"jourUserName":fields.jourUserName,
				"date":fields.date
			},{
				"laud":fields['laud[]']
			},function(err,result){
				if(err){
					res.send("-1")
					return ;
				}
				res.send("1")
			})
		})
	}
}

//更新评论
exports.updateComment=function(req,res){
	if(req.session&&req.session.control){
		var form = new formidable.IncomingForm()
		form.parse(req, function(err, fields, files) {
			// console.log(fields.jourUserName)
			// console.log(fields.date)
			// console.log(fields.commentUserName)
			// console.log(fields.commentContent)
			// console.log("----------------")
			if(err){
				res.send("-1")
				return ;
			}
			//更新数据库
			db1.pushInsert({
				"jourUserName":fields.jourUserName,
				"date":fields.date
			},{"comment":{"commentUserName" : fields.commentUserName,"commentContent" : fields.commentContent,"answer":[]}},
			function(err,result){
				// console.log("更新评论")
				if(err)
					res.send("-1")
				res.send("1")
			})
		})
	}
}

//更新回复
exports.updateAnswer=function(req,res){
	if(req.session&&req.session.control){
		var form = new formidable.IncomingForm()
		form.parse(req, function(err, fields, files) {
			// console.log(fields)
			// console.log(fields.jourUserName)
			// console.log(fields.date)
			// console.log(fields.commentUserName)
			// console.log(fields.commentContent)
			// console.log(fields.anserUserName)
			// console.log(fields.anserContent)
			// console.log("----------------")
			if(err){
				res.send("-1")
				return ;
			}
			//找到数据该插入的位置
			db1.findOne({"jourUserName":fields.jourUserName,"date":fields.date},function(err,result){
				if(err)
					res.send("-1")
				var comment=result.comment.concat()
				for(var i=0;i<comment.length;i++){
					if(comment[i].commentUserName==fields.commentUserName&&comment[i].commentContent==fields.commentContent){
						var answer={"anserUserName":fields.anserUserName,"anserContent":fields.anserContent}
						if(!comment[i].answer){
							comment[i].answer=[]
						}
						comment[i].answer.push(answer)
						break ;
					}
				}
				//更新回复数据  
				db1.upDateOne({
					"jourUserName":fields.jourUserName,
					"date":fields.date
				},{"comment":comment},
				function(err,result){
					if(err)
						res.send("-1")
					res.send("1")
				})
			})
		})
	}
}				        
					      
//修改签名（sign）
exports.setSignAjax=function(req,res){
	if(req.session&&req.session.control){
		var username=req.session.username
		var form = new formidable.IncomingForm()
		form.parse(req, function(err, fields, files) {
			var val=fields.val
			req.session.sign=val
			db.upDateOne({"username":username},{"sign":val},function(err,result){
				if(err){
					res.send("-1")
				}else{
					res.send("1")
				}
			})
		})
	}else{
		res.redirect("/login")
	}
	
}					      
					     
					          
//发一条说说的两个ajax

//发说说的发的图片处理
exports.sendJour=function(req,res){
	if(!(req.session&&req.session.control)){
		return ;
	}
	var form = new formidable.IncomingForm()
	form.uploadDir = "./public/img"
	form.parse(req, function(err, fields, files) {
		if(err){
			res.send("服务器错误，请联系管理员")
			return ;
		}else{
			var username=req.session.username
			var avatar=req.session.avatar
			var shijiancuo=Date.now()
			var zhuanhuan = new Date(shijiancuo)
			var year=zhuanhuan.getFullYear()
			var month=zhuanhuan.getMonth()+1
			var ri=zhuanhuan.getDate()
			var hours=zhuanhuan.getHours()
			var minute=zhuanhuan.getMinutes()
			var second=zhuanhuan.getSeconds()
			var jourDate=year+"-"+month+"-"+ri+" "+hours+":"+minute+":"+second
			var content=""
			var picture=[]
			if(fields.jourContent.length!=0){
				//替换内容
				content=fields.jourContent
			}
			if(files.hasOwnProperty(0)){
				gaiming(0)
			}else{
				db1.insertOne({
				  "jourUserName" : username,
				  "jourAvatar" : avatar,
				  "date" : jourDate,
				  "shijian":shijiancuo,
				  "content" : content,
				  "picture":picture,
				  "laud" : [],
				  "comment" : []
				},function(err,result){
	      			if(err){
	      				res.send("服务器错误，请联系管理员")
	      				return ;
	      			}else{
	      				res.redirect("/myshuoshuo")
	      			}
	      		})
			}
			function gaiming(i){
				var date=req.session.username+Date.now()+".jpg"
				fs.rename("./"+files[i].path,"./public/img/"+date,function(err){
					if(err){
						res.send("服务器错误，请联系管理员")
						return ;
					}else{
						picture.push(date)
						i++;
						if(files.hasOwnProperty(i)){
							gaiming(i)
						}else{
							db1.insertOne({
							  "jourUserName" : username,
							  "jourAvatar" : avatar,
							  "date" : jourDate,
							  "shijian":shijiancuo,
							  "content" : content,
							  "picture":picture,
							  "laud" : [],
							  "comment" : []
							},function(err,result){
				      			if(err){
				      				res.send("服务器错误，请联系管理员")
				      				return ;
				      			}else{
				      				res.redirect("/myshuoshuo")
				      			}
				      		})
							return ;
						}
					}
				})
			}
			
		}
	})
}














